1
Mekanika Pengendalian Salinan
AI037Lesson 16
00:00

Untuk menguasai siklus hidup objek C++ adalah dengan menguasai mekanisme dasar eksistensi di dalam heap dan stack. Pengendalian salinan mendefinisikan bagaimana sebuah kelas mengelola keberlangsungan hidup melalui dua operasi: yaitu konstruktor salinan dan operator penugasan salinan.

1. Inisialisasi vs. Penugasan

Inisialisasi langsung (misalnya, string dots(10, '.')) memanggil konstruktor secara langsung. Namun, inisialisasi salinan (string s2 = dots) bergantung pada konstruktor salinan. Berbeda dengan inisialisasi, penugasan (trans = accum) menimpa objek yang sudah ada menggunakan operator=. Suatu batasan penting: parameter konstruktor salinan harus berupa referensi (const Foo&); jika tidak, melewatkan argumen secara nilai akan memicu lingkaran rekursi tak terbatas pemanggilan salinan.

Objek Sumber[Data A]Objek Tujuan[Data A]Salinan AnggotaKonstruktor Salinan / operator=

2. Peran Sintesis

Jika Anda tidak mendefinisikan anggota-anggota ini, kompiler menyediakan yang disintesis versi yang melakukan salinan anggota per anggota. Waspadalah: meskipun cukup untuk tipe-tipe sederhana, versi ini sering gagal untuk kelas yang mengelola memori dinamik, menyebabkan pointer yang tidak valid atau penghapusan ganda.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>